import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './plugins/element.js'
import 'babel-polyfill'
import moment from 'moment'//导入文件
Vue.prototype.$moment = moment;//赋值使用

import md5 from 'js-md5';
Vue.prototype.$md5 = md5;

// import WxTool from './plugins/wxtool_vue.js'
// Vue.prototype.wxtool = new WxTool("zp");

Vue.config.productionTip = false

/* 打包判断环境*/
if(process.env.NODE_ENV=='productionTest'){
	Vue.prototype.entUrl = 'https://testent.huanghehr.com/'
	Vue.prototype.mUrl= 'https://testm.huanghehr.com/'
}else if(process.env.NODE_ENV=='development') {
	Vue.prototype.entUrl = 'https://testent.huanghehr.com/'
	Vue.prototype.mUrl= 'https://testm.huanghehr.com/'
} else{
	Vue.prototype.entUrl = 'https://ent.huanghehr.com/'
	Vue.prototype.mUrl= 'https://m.huanghehr.com/'
}


//正则表达式验证是否空
Vue.prototype.$isNull = function (v){
	if ( v == "" ) return true;
	var regu = "^[ ]+$";
	var re = new RegExp(regu);
	return re.test(v);
}

//正则表达式验证手机号
Vue.prototype.$telText = (rule, value, callback) => {
	var mobile = /^1(3|4|5|6|7|8|9)\d{9}$/;
	if(mobile.test(value)){
		callback()
	}else{
		return callback(new Error('请输入正确的手机号'));
	}
}

//正则表达式验证数字
Vue.prototype.$numberText = (rule, value, callback) => {
	var reg = /(^[1-9]\d*$)/;
	if((reg.test(value))){
		if(value>2147483647){
			return callback(new Error('输入超出最大值'));
		}else{
			callback()
		}

	}else{
		return callback(new Error('请输入正整数'));
	}
}


//正则表达式验证邮箱
Vue.prototype.$emailText = function (v){
	var email = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/;
	if(email.test(v)){
		return true;
	}else{
		return false;
	}
}

//正则表达式验证密码
Vue.prototype.$passwordText = function (v){
	var password = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,16}$/; //密码正则 密码包含 数字,英文,字符中的两种以上，长度8-16位
	if(password.test(v)){
		return true;
	}else{
		return false;
	}
}

//时间戳转换方法    date:时间戳数字
Vue.prototype.$formatDate = function(date) {
	var date = new Date(date);
	var YY = date.getFullYear() + '-';
	var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());
	var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
	var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
	var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
	return YY + MM + DD +" "+hh + mm + ss;
}

//时间戳转换方法    date:时间戳数字
Vue.prototype.$formatDateMonth = function(date) {
	var date = new Date(date);
	var YY = date.getFullYear() + '.';
	var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) ;
	return YY + MM
}

//计算生日(时间差)
Vue.prototype.$getDateDifference = function(str) {
	let val;
	let strArr = str.split("-");
	let year = strArr[0];
	let month = strArr[1];
	let day = strArr[2];
	let d = new Date();
	let nowYear = d.getFullYear();
	let nowMonth = d.getMonth() + 1;
	let nowDay = d.getDate();
	if(nowYear == year){
		val = 0;//同年 则为0岁
	}else{
		let ageDiff = nowYear - year ; //年之差
		if(ageDiff > 0){
			if(nowMonth == month) {
				let dayDiff = nowDay - day;//日之差
				if(dayDiff < 0){
					val = ageDiff - 1;
				}else{
					val = ageDiff ;
				}
			}else{
				let monthDiff = nowMonth - month;//月之差
				if(monthDiff < 0){
					val = ageDiff - 1;
				}else{
					val = ageDiff ;
				}
			}
		}else{
			val = -1;//返回-1 表示出生日期输入错误 晚于今天
		}
	}
	return val;//返回时间差
}

/* 判断用户是否登录 弹出登录*/
Vue.prototype.userLoginFlag = function (){
	let loginStatus = localStorage.getItem("loginStatus");
	if(loginStatus==0||loginStatus==null||loginStatus==undefined||loginStatus==""){
		this.$message.error('登录失效，请重新登录');
		setTimeout(()=>{
			this.$router.push({name:'Login',query:{back:true}})
		},1000)
		return false
	}else{
		return true
	}
}

/* 判断用户是否登录 不弹出登录*/
Vue.prototype.userLoginFlag1 = function (){
	let loginStatus = localStorage.getItem("loginStatus");
	if(loginStatus==0||loginStatus==null||loginStatus==undefined||loginStatus==""){
		return false
	}else{
		return true
	}
}

//是否最后一页
Vue.prototype.$isLastPage = function (v){
	if(0==v.pages||v.pages==v.current){
		return true;
	}else {
		return  false;
	}
}

//加载失败（默认处理方法）
Vue.prototype.$loadError = function (res){
	console.log("加载失败"+res)
}

/***
 * 废弃
 预处理图片，示例如：
 1.  this.contentList = this.$preImgs('cms_content',this.contentList.concat(res.result.records));
 2.    this.news =this.$preImgs("cms_content",res.result);
 * **/
Vue.prototype.$preImgs = function (type,v){
	return  v;
	// console.log("预处理图片"+typeof(v) +"Array.isArray(a)"+Array.isArray(v))
	// if(Array.isArray(v)){//处理数组
	// 	var arrs=[];
	// 	for(var i in v){
	// 		arrs.push(this.$preImg(type,v[i]));
	// 	}//end of for
	// 	return  arrs;
	// }else {//处理普通对象
	// 	return this.$preImg(type,v)
	// }
	//return v;
}

//废弃 ：私有方法，不建议调用
Vue.prototype.$preImg = function (type,item){
	return  v;

	// if(''==item.thumb_dictText||null==item.thumb_dictText){
	// 	return item;
	// }
	// var prefix="前缀测试"; //FIXME:环境稳定后调整
	// if('cms_content'==type){
	// 	item.thumb_dictText= prefix+item.thumb_dictText;
	// 	return item;
	// }
	// //FIXME:根据类型调整
	// console.log("未知类型，请自行调整："+type)
	// return item;
}
/***
 *
 * @param arr 需要裁剪的图片数组
 * @param size 两种形式 形式1 ： 300x500 形式2：300x500_80（其中300 是宽，500 是高 80 是比例）
 *  @param type
 * @returns https://testres.huanghehr.com/public/tailoring/2021/2/2/f917e8aaa1469fccae562a191739192e_300x500_80.jpg
 */
Vue.prototype.$imgResizes = function (arr,size,type){

	let v=arr;
	// console.log("$imgResizes"+typeof(v) +"Array.isArray(a)"+Array.isArray(arr))
	if(Array.isArray(v)){//处理数组
		let arrs=[];
		for(let i in v){
			//console.log(i)
			let a=v[i];
			if(undefined==type||null==type||""==type){
				let imgUrl=a.image_dictText;
				a.image_dictText=this.$imgResize(imgUrl,size)

			}else if("imageFileId_dictText"==type){
				let imgUrl=a.imageFileId_dictText;
				a.imageFileId_dictText=this.$imgResize(imgUrl,size)

			}else {//  FIXME:根据类型调整


				console.log("未知类型，请自行调整："+type)
			}
			//console.log(" type："+type +"" +imgUrl)
			arrs.push(a);

		}//end of for
		return  arrs;
	}else {//处理普通对象
		console.log("非数组")
		return v;
	}

}
/***
 *
 * @param imgUrl 图片地址（如：https://testres.huanghehr.com/public/tailoring/2021/2/2/f917e8aaa1469fccae562a191739192e.jpg）
 * @param size 两种形式 形式1 ： 300x500 形式2：300x500_80（其中300 是宽，500 是高 80 是比例）
 * @returns https://testres.huanghehr.com/public/tailoring/2021/2/2/f917e8aaa1469fccae562a191739192e_300x500_80.jpg
 */
Vue.prototype.$imgResize = function (imgUrl,size){
	console.log("process.env.NODE_ENV："+process.env.NODE_ENV +" imgUrl" +imgUrl)
	if(null==imgUrl) {
		return imgUrl;
	}
	if(imgUrl.lastIndexOf(".")<0){
		return imgUrl;
	}

	let url=imgUrl;
	if(process.env.NODE_ENV=='productionTest'||process.env.NODE_ENV=='development'){//测试环境
			url=imgUrl.substring(0,imgUrl.lastIndexOf("."))+"_"+size+imgUrl.substring(imgUrl.lastIndexOf("."),imgUrl.length)
		 console.log("转换前：" +imgUrl+"===url===>:\r\n"+url)
	} else{
		console.log("当前环境不支持裁剪："+process.env.NODE_ENV)
		url=imgUrl;
	}


	return  url;

	// if(''==item.thumb_dictText||null==item.thumb_dictText){
	// 	return item;
	// }
	// var prefix="前缀测试"; //FIXME:环境稳定后调整
	// if('cms_content'==type){
	// 	item.thumb_dictText= prefix+item.thumb_dictText;
	// 	return item;
	// }
	// //FIXME:根据类型调整
	// console.log("未知类型，请自行调整："+type)
	// return item;
}
/**
 * 处理下载接口返回的文件流数据
 * @param {*} res http请求返回数据
 */
Vue.prototype.download = function(res){
	// 错误处理
	if (res.data.type == "application/json") {
		let reader = new FileReader();
		reader.readAsText(res.data, 'utf-8');
		reader.onload = function () {
			let json_data = JSON.parse(reader.result);
			Message({
				showClose: true,
				message: json_data.Message,
				type: "error"
			});
		}
		return;
	}
	// 下载处理
	let filename = "content-disposition" in res.headers ?
	decodeURIComponent(
		res.headers["content-disposition"]
		.split(";")[1]
		.split("=")[1]
		.replace(/"/g, "")
	):"下载文件";
	try {
		if(window.navigator.msSaveOrOpenBlob) {
			navigator.msSaveBlob(res.data, filename);
		}else {
			let blob = new Blob([res.data], {
				type: "application/vnd.ms-excel"
			});
			let url = URL.createObjectURL(blob);
			let link = document.createElement("a");
			link.setAttribute("href", url);
			link.setAttribute("download", filename);
			link.style.display = "none";
			document.body.appendChild(link);
			link.click();
			URL.revokeObjectURL(url); // 释放URL 对象
			document.body.removeChild(link);
		}
	} catch (err) {
		// console.log(err)
	}
}

/* 路由发生变化修改页面meta */
router.beforeEach((to, from, next) => {
	if(to.meta.content){
		let head = document.getElementsByTagName('head');
		let meta = document.createElement('meta');
		document.querySelector('meta[name="keywords"]').setAttribute('content', to.meta.content.keywords)
		document.querySelector('meta[name="description"]').setAttribute('content', to.meta.content.description)
		meta.content = to.meta.content;
		head[0].appendChild(meta)
	}
	// /* 路由发生变化修改页面title */
	if (to.meta.title) {
	  	document.title = to.meta.title;
	}
	next()
});


//获取当前页面路由信息
router.afterEach(function(transition) {
	//console.log(transition)
	setTimeout(()=>{
		var _hmt = _hmt || [];
		(function() {
			//每次执行前，先移除上次插入的代码 百度统计
			document.getElementById('baiduCount') && document.getElementById('baiduCount').remove();
			var hm = document.createElement("script");
			var host = window.location.hostname;
			if(host.match("huanghehr.com")){
				hm.src = "https://hm.baidu.com/hm.js?43fbdc302b4a42a8c8c4215639eb6853";
			} else if (host.match("hnic.com.cn")) {//测试环境
				hm.src = "https://hm.baidu.com/hm.js?f31ea3164af62ee5d0a1c3b123476e0a";
			}

			hm.id = "baiduCount"
			var s = document.getElementsByTagName("script")[0];
			s.parentNode.insertBefore(hm, s);
		})();
	},0);
})

new Vue({
	router,
	store,
	render: h => h(App)
}).$mount('#app')
